grub2: Exit gracefully if the configuration has BLS enabled
authorJavier Martinez Canillas <javierm@redhat.com>
Thu, 26 Sep 2019 15:33:57 +0000 (17:33 +0200)
committerAtomic Bot <atomic-devel@projectatomic.io>
Thu, 26 Sep 2019 17:59:37 +0000 (17:59 +0000)
commit985a14100295c99d0c6d712bfbee0ec52a3a1601
treed4ee944d463e13b3556ddf612705f089450b9896
parent5ea85ba5ac9a33d014264e48784d59d81ea61b91
grub2: Exit gracefully if the configuration has BLS enabled

Since Fedora 30 grub2 has support to populate its menu entries from the
BootLoaderSpec fragments in /boot/loader/entries, so there's no need to
generate menu entries anymore using the /etc/grub.d/15_ostree script.

But since ostree doesn't update the bootloader, it may be that the grub2
installed is an old one that doesn't have BLS support.

For new installs, GRUB_ENABLE_BLSCFG=true is set in /etc/default/grub to
tell the /etc/grub.d/10_linux script if a blscfg command has to be added
to the generated grub2 config file.

So check if BLS is enabled in /etc/default/grub and only add the entries
if that's not the case. Otherwise the menu entries will be duplicated.

The approach has the drawback that if a user sets GRUB_ENABLE_BLSCFG=true
in /etc/default/grub without updating grub2, they will get an empty menu.
Since there won't be any entries created by the 30_ostree script and the
blscfg command won't work on the older grub2.

Unfortunately there is no way to know if the installed grub2 already has
BLS support or not.

Related: https://bugzilla.redhat.com/show_bug.cgi?id=1751272#c27

Closes: #1929
Approved by: jlebon
src/boot/grub2/grub2-15_ostree